Cách vận hành Cache (tin học)

Phần cứng cài đặt cache như một nơi chứa dữ liệu tạm thời để có thể sử dụng lại. Vi xử lý (CPUs) và ổ đĩa cứng (HDD) thường xuyên sử dụng Cache,tương tự trình duyệt webmáy chủ (server).

Cache gồm thanh ghi. Mỗi thanh ghi chứa 1 bit để đánh dấu là đang lưu dữ liệu từ bộ nhớ hoặc chưa được sử dung, 1 nhãn (tag) để kiểm tra xem nó có phải là dữ liệu ứng với bộ nhớ hay không và 1 vùng để lưu trữ dữ liệu giống với bộ nhớ.

Khi cache client (vi xử lý,trình duyệt web,...) cần truy cập đến dữ liệu ở bộ nhớ,nó sẽ kiểm tra cache. Nếu 1 thanh ghi có nhãn tương ứng với dữ liệu mong muốn thì cache client sẽ sử dụng dữ liệu trên thanh ghi đó.Tình huống này được gọi là cache-hit. Ngược lại, nếu không tìm được thanh ghi tương ứng, thì tình huống này gọi là cache miss. Lúc này CPU sẽ truy cập vào bộ nhớ, lấy dữ liệu cần truy cập,đồng thời lưu dữ liệu đó vào 1 thanh ghi nào đó.

Trong trường hợp cache miss, CPU sẽ loại bỏ một số thanh ghi để dọn chỗ cho dữ liêu không nằm trong cache. Việc loại bỏ thanh ghi phải tuân thủ các quy định về thay thế,thông dụng nhất là "leastrecently used" (LRU), tức là loại bỏ những cache ít được sử dụng nhất.

Nguyên tắc ghi của hệ thống(Writing policies)

Khi CPU ghi dữ liệu vào Cache, cầnphải có một số quy tắc ghi dữ liệu đó vào bộ nhớ.

Có 2 cách tiếp cận:

- Write-through: ghi ngay lập tức dữ liệu lên cả cache và bộ nhớ(DRAM)

-Write-back: ghi cho cache trước, việc ghi lên bộ nhớ bị trì hoãn đến khi có dữ liệu mới cần đặt lên vùng lưu trữ đó.

Một write-back cache được cài đặt khá phức tạp. Nó đánh dấu những thanh ghi có dữ liệu thay đổi,đánh dấu chúng là có thể ghi đè ("dirty"), khi thanh ghi bị thay thế, dữ liệu trên(được đánh dấu) sẽ được ghi vào bộ nhớ. Do đó,khi read-miss trên write-back cache,mất 2 lần truy cập,một là để ghi dữ liệu bị thay đổi vào bộ nhớ, hai là để lấy dữ liệu cần dùng và ghi lên cache.

Khi write-miss (xảy ra cache-miss), có 2 cách xử lý:

-Write allocate: dữ liệu sẽ được ghi lên cache, một thanh ghi sẽ bị thay thế. Cách này tương tự read-miss

-No-write allocate: dữ liệu sẽ được ghi vào bộ nhớ nhưng không ghi trên cache

Cả write-through và write-back đều sử dụng 2 cách trên khi write-miss, nhưng phổ biến chúng được ứng với từng cách:

-Write-back cache sử dụng write allocate giúp ghi đè dữ liệu trên cache hiệu quả hơn

-Write-through cache sử dụng no-write allocate và việc ghi dư liệu không được lưu trữ trong cache không có hiệu quả.